IO流

1. 字节流

  • 输入:InputSteam
  • 输出:OutputSteam

2. 字符流

  • Reader
  • Writer

3. 节点流

  • Char
    • CharArrayReader
    • CharArrayWriter
  • String
    • StringReader
    • StringWriter
  • Pipe
    • PipeInputStream
    • PipeOutputStream
  • File
    • FileInputSteam
    • FileOutputStream

4. 处理流

  • buffer

    • BufferInputStream
    • BufferOutputStream
    • BufferReader
    • BufferWriter
  • 序列化和反序列化

    • Serializable

    • Java 关键字 transient (透明的)

      某属性是透明的就不会被序列化。

  • data

    • DataInputSteam
    • DataOutputSteam
  • object流

  • 转换流

    • InputSteamReader
    • InputSteamWriter
  • Filter

    • 四个
  • print

    • PrintWriter
    • PrintStream

5. 流的概念

  • 概念:内存与存储设备之间传输数据的通道。

6. 流的分类

  • 按方向
    • 输入流:将<存储设备>中的内容读入到<内存>中。
    • 输出流:将<内存>中的内容写入到<存储设备>中。
img
Image
  • 按单位
    • 字节流:以字节为单位,可以读写所有数据。
    • 字符流:以字符为单位,只能读写文本数据。
  • 按功能
    • 字节流:具有实际传输数据的读写功能。
    • 过滤流:在节点流的基础之上增强功能。

7. 开发时用的对象

想要知道开发时用到哪些对象。只要通过四个明确即可。

  1. 明确是否有源和目的(汇)

​ 源:InputStream Reader

​ 目的:OutputStream Writer

  1. 明确数据是否是纯文本数据。

​ 源:是纯文本:Reader

​ 否:InputStream

​ 目的:是纯文本 Writer

​ 否:OutputStream

  1. 明确具体的设备。

​ 源设备:

​ 硬盘:File

​ 键盘:System.in

​ 内存:数组

​ 网络:Socket流

​ 目的设备:

​ 硬盘:File

​ 控制台:System.out

​ 内存:数组

​ 网络:Socket流

  1. 是否需要其他额外功能。

    1. 是否需要高效(缓冲区);

      ​ 是,就加上buffer.

    2. 转换。转换流。

8. 其他注意点

  1. 如果需求中已经明确了指定编码表的动作,那就不可以使用FileWriter,因为FileWriter内部是使用默认的本地码表。只能使用其父类OutputStreamWriter。

    OutputStreamWriter接收一个字节输出流对象,既然是操作文件,那么对象应该是FileOutputStream。

    OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream("a.txt", charsetName));

  2. 什么时候需要使用转换流?

    1. 源或者目的对应的设备是字节流,但是操作的却是文本数据,可以使用转换作为桥梁,提高对文本操作的便捷。
    2. 一旦操作文本设计具体的指定编码表时,必须使用转换流。
Copyright © rootwhois.cn 2021-2022 all right reserved,powered by GitbookFile Modify: 2023-03-05 10:55:52

results matching ""

    No results matching ""